   1 .
   2 . DAY-OF-THE-WEEK
   3 .       AND
   4 . CALENDAR PROGRAM
   5 .
   6 .BY KIRK GREGG
   7 .SEPTEMBER '80
   8 .
   9 :RETURN 
  10 CLEAR ;LIST 2,3
  20 PRINT ;PRINT " ENTER ANY DATE BETWEEN
  30 PRINT " 1-1-1583 & 12-31-9999
  40 PRINT ;INPUT " MONTH     (1-12)?"M
  50 IF (M<1)+(M>12) GOTO 810
  60 N=31;IF M=2 N=29
  70 IF (M=9)+(M=4)+(M=6)+(M=11)N=30
  80 PRINT #1,"   DAY     (1-",N,;INPUT ")?"D
  90 IF (D<1)+(D>N)GOTO 840
 100 INPUT "  YEAR(1583►9999)?"Y
 110 IF (Y<1583)+(Y>9999)GOTO 870
 120 IF M#2 GOTO 150
 130 X=Y÷4;IF RM#0GOTO 140
 135 X=Y÷100;IF RM#0GOTO 150
 136 X=Y÷400;IF RM#0GOTO 900
 137 GOTO 150
 140 N=N-1;IF D=29GOTO 900
 150 Z=Y;K=M;E=D;IF M<3 M=M+12;Y=Y-1
 160 GOSUB 510
 170 I=RM;IF I=0 I=7
 180 D=1;GOSUB 510
 190 L=RM;IF L=0 L=7
 200 W=1;IF L=1 W=0
 201 .
 202 .PRINT CALENDAR
 203 .
 210 NT=0;CLEAR ;FC=RND (244);BC=FC+12
 220 CX=-40;CY=39;GOSUB 600+K
 230 PRINT #6,Z;BOX 0,39,141,9,3
 240 X=(L-1)×20-62;Y=28
 250 FOR C=1TO N
 260 CX=X;CY=Y;PRINT #2,C,
 270 IF X=-62 W=W+1
 280 L=L+1;X=X+20
 290 IF L>7 X=-62;Y=Y-11;L=1
 300 NEXT C
 301 .
 302 .DRAW MATRIX
 303 .
 310 X=70;Y=23
 320 FOR C=1TO W
 330 LINE -X,Y,0
 340 LINE X,Y,1
 350 Y=Y-11;NEXT C
 360 Y=34-W×11
 370 FOR C=-70TO XSTEP 20
 380 LINE C,34,0
 390 LINE C,Y,1;NEXT C
 400 .
 401 .PRINT DAY NAME
 402 .
 410 CX=-40;CY=-40
 420 PRINT #2,E," ► ",;GOSUB 700+I
 430 .
 431 .ASK IF DONE
 432 .
 440 K=KP;CLEAR ;PRINT ;PRINT 
 450 PRINT "  ANY MORE (Y/N) ? ",;K=KP
 460 IF K#78 CLEAR ;PRINT ;NT=3;GOTO 40
 470 .
 471 .END OF JOB
 472 .
 480 PRINT ;PRINT ;PRINT " HAVE A BEAUTIFUL DAY!!
 490 STOP
 500 .
 501 .CALCULATE D.O.W.
 502 .
 510 X=(D+2×M+Y+6×(M+1)÷10+2-Y÷100+Y÷400+Y÷4)÷7;RETURN 
 598 .
 599 .MONTH NAMES
 600 .
 601 PRINT "JANUARY",;RETURN 
 602 PRINT "FEBRUARY",;RETURN 
 603 PRINT "MARCH",;RETURN 
 604 PRINT "APRIL",;RETURN 
 605 PRINT "MAY",;RETURN 
 606 PRINT "JUNE",;RETURN 
 607 PRINT "JULY",;RETURN 
 608 PRINT "AUGUST",;RETURN 
 609 PRINT "SEPTEMBER",;RETURN 
 610 PRINT "OCTOBER",;RETURN 
 611 PRINT "NOVEMBER",;RETURN 
 612 PRINT "DECEMBER",;RETURN 
 698 .
 699 .DAY NAMES
 700 .
 701 PRINT "SUNDAY",;RETURN 
 702 PRINT "MONDAY",;RETURN 
 703 PRINT "TUESDAY",;RETURN 
 704 PRINT "WEDNESDAY",;RETURN 
 705 PRINT "THURSDAY",;RETURN 
 706 PRINT "FRIDAY",;RETURN 
 707 PRINT "SATURDAY",;RETURN 
 800 .
 801 .ERROR MESSAGES
 802 .
 810 PRINT ;PRINT " INVALID MONTH!!
 820 PRINT " 1 TO 12 ONLY PLEASE!!
 830 FOR C=1 TO 450;NEXT C;CLEAR ;PRINT ;GOTO 40
 840 PRINT ;PRINT " INVALID DAY!!  ",
 850 GOSUB 600+M
 860 PRINT ;PRINT #3," HAS ONLY",N," DAYS!!";PRINT ;GOTO 80
 870 PRINT ;PRINT " INVALID YEAR!!
 880 PRINT " 1583 TO 9999 ONLY PLEASE!
 890 PRINT ;GOTO 100
 900 PRINT ;PRINT " INVALID DATE !!
 910 PRINT ;PRINT #6,Y," IS NOT A LEAP YEAR!
 920 GOTO 830
CLEAR ;RUN 
